home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 0.9.1.3 stable / flock-0.9.1.3.en-US.win32.exe / flock / chrome / browser.jar / content / browser / preferences / changeaction.js < prev    next >
Text File  |  2006-07-18  |  9KB  |  220 lines

  1. //@line 38 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/preferences/changeaction.js"
  2.  
  3. var gChangeActionDialog = {
  4.   _item             : null,
  5.   _bundle           : null,
  6.   _lastSelectedMode : null,
  7.   _lastSelectedSave : null,
  8.  
  9.   init: function ()
  10.   {
  11.     this._item = window.arguments[0];
  12.     this._bundle = document.getElementById("bundlePreferences");
  13.     dump("*** ir = " + this._item.toSource() + "\n");
  14.     
  15.     var typeField = document.getElementById("typeField");
  16.     typeField.value = this._item.typeName;
  17.     
  18.     var extensionField = document.getElementById("extensionField");
  19.     var ext = "." + this._item.extension.toLowerCase();
  20.     var contentType = this._item.type;
  21.     extensionField.value = this._bundle.getFormattedString("extensionStringFormat", [ext, contentType]);
  22.     
  23.     var typeIcon = document.getElementById("typeIcon");
  24.     typeIcon.src = this._item.bigIcon;
  25.  
  26.     // Custom App Handler Path - this must be set before we set the selected
  27.     // radio button because the selection event handler for the radio group
  28.     // requires the extapp handler field to be non-empty for the extapp radio
  29.     // button to be selected. 
  30.     var customApp = document.getElementById("customApp");
  31.     if (this._item.customHandler)
  32.       customApp.file = this._item.customHandler;
  33.     else
  34.       customApp.file = null;
  35.  
  36.     var defaultApp = document.getElementById("defaultApp");
  37.     var defaultAppIcon = null;
  38.     var fallbackIconURL = "moz-icon://goat?contentType=" + this._item.type + "&size=16";
  39.     if (this._item.mimeInfo instanceof Components.interfaces.nsIPropertyBag) {
  40.       try {
  41.         defaultAppIcon = this._item.mimeInfo.getProperty("defaultApplicationIconURL");
  42.       }
  43.       catch (e) { }
  44.       if (defaultAppIcon)
  45.         defaultAppIcon += "?size=16";
  46.     }
  47.     defaultApp.image = defaultAppIcon || fallbackIconURL;
  48.     defaultApp.label = this._item.mimeInfo.defaultDescription;
  49.  
  50.     var pluginName = document.getElementById("pluginName");
  51.     var foundPlugin = false;
  52.     for (var i = 0; i < navigator.plugins.length; ++i) {
  53.       var plugin = navigator.plugins[i];
  54.       for (var j = 0; j < plugin.length; ++j) {
  55.         if (contentType == plugin[j].type) {
  56.           pluginName.label = plugin.name;
  57.           pluginName.image = "moz-icon://goat.goat?contentType=" + contentType + "&size=16";
  58.           foundPlugin = true;
  59.         }
  60.       }
  61.     }
  62.     if (!foundPlugin) {
  63.       pluginName.label = this._bundle.getString("pluginHelperNoneAvailable");
  64.       document.getElementById("plugin").disabled = true;
  65.     }
  66.       
  67.     // Selected Action Radiogroup
  68.     var handlerGroup = document.getElementById("handlerGroup");
  69.     if (this._item.handleMode == FILEACTION_OPEN_PLUGIN && this._item.pluginEnabled)
  70.       handlerGroup.selectedItem = document.getElementById("plugin");
  71.     else {
  72.       if (this._item.handleMode == FILEACTION_OPEN_DEFAULT)
  73.         handlerGroup.selectedItem = document.getElementById("openDefault");
  74.       else if (this._item.handleMode == FILEACTION_SAVE_TO_DISK)
  75.         handlerGroup.selectedItem = document.getElementById("saveToDisk");
  76.       else
  77.         handlerGroup.selectedItem = document.getElementById("openApplication");
  78.     }
  79.     this._lastSelectedMode = handlerGroup.selectedItem;
  80.     
  81.     // Figure out the last selected Save As mode
  82.     var saveToOptions = document.getElementById("saveToOptions");
  83.     this._lastSelectedSave = saveToOptions.selectedItem;
  84.  
  85.     // We don't let users open .exe files or random binary data directly 
  86.     // from the browser at the moment because of security concerns. 
  87.     var mimeType = this._item.mimeInfo.MIMEType;
  88.     if (mimeType == "application/object-stream" ||
  89.         mimeType == "application/x-msdownload") {
  90.       document.getElementById("openApplication").disabled = true;
  91.       document.getElementById("openDefault").disabled = true;
  92.       handlerGroup.selectedItem = document.getElementById("saveToDisk");
  93.     }
  94.   },
  95.   
  96.   onAccept: function ()
  97.   {
  98.     var contentType = this._item.mimeInfo.MIMEType;
  99.     var handlerGroup = document.getElementById("handlerGroup");
  100.     switch (handlerGroup.selectedItem.value) {
  101.     case "plugin":
  102.       this._item.handleMode = FILEACTION_OPEN_PLUGIN;
  103.       var pluginName = document.getElementById("pluginName");
  104.       this._item.action = this._bundle.getFormattedString("openWith", [pluginName.label]);
  105.       this._item.pluginEnabled = true;
  106.       break;
  107.     case "system":
  108.       this._item.handledOnlyByPlugin = false;
  109.       this._item.handleMode = FILEACTION_OPEN_DEFAULT;
  110.       var defaultDescr = this._item.mimeInfo.defaultDescription;
  111.       this._item.action = this._bundle.getFormattedString("openWith", [defaultDescr]);
  112.       break;
  113.     case "app":
  114.       this._item.handledOnlyByPlugin = false;
  115.       this._item.handleMode = FILEACTION_OPEN_CUSTOM;
  116.       var customApp = document.getElementById("customApp");
  117.       this._item.action = this._bundle.getFormattedString("openWith", [customApp.label]);        
  118.       break;  
  119.     case "save":
  120.       this._item.handledOnlyByPlugin = false;
  121.       this._item.handleMode = FILEACTION_SAVE_TO_DISK;
  122.       this._item.action = this._bundle.getString("saveToDisk");
  123.       break;  
  124.     }
  125.     
  126.     // The opener uses the modifications to the FileAction item to update the
  127.     // datasource.
  128.     return true;
  129.   },
  130.   
  131.   doEnabling: function (aSelectedItem)
  132.   {
  133.     var defaultApp            = document.getElementById("defaultApp");
  134.     var saveToDefault         = document.getElementById("saveToDefault");
  135.     var saveToCustom          = document.getElementById("saveToCustom");
  136.     var customDownloadFolder  = document.getElementById("customDownloadFolder");
  137.     var chooseCustomDownloadFolder = document.getElementById("chooseCustomDownloadFolder");
  138.     var saveToAskMe           = document.getElementById("saveToAskMe");
  139.     var pluginName            = document.getElementById("pluginName");
  140.     var changeApp             = document.getElementById("changeApp");
  141.     var customApp             = document.getElementById("customApp");
  142.     
  143.     switch (aSelectedItem.id) {
  144.     case "openDefault":
  145.       changeApp.disabled = customApp.disabled = saveToDefault.disabled = saveToCustom.disabled = customDownloadFolder.disabled = chooseCustomDownloadFolder.disabled = saveToAskMe.disabled = pluginName.disabled = true;
  146.       defaultApp.disabled = false;
  147.       break;
  148.     case "openApplication":
  149.       defaultApp.disabled = saveToDefault.disabled = saveToCustom.disabled = customDownloadFolder.disabled = chooseCustomDownloadFolder.disabled = saveToAskMe.disabled = pluginName.disabled = true;
  150.       changeApp.disabled = customApp.disabled = false;
  151.       if (!customApp.file && !this.changeApp()) {
  152.         this._lastSelectedMode.click();
  153.         return;
  154.       }
  155.       break;
  156.     case "saveToDisk":
  157.       changeApp.disabled = customApp.disabled = defaultApp.disabled = pluginName.disabled = true;
  158.       var saveToOptions = document.getElementById("saveToOptions");
  159.       customDownloadFolder.disabled = chooseCustomDownloadFolder.disabled = !(saveToOptions.selectedItem.id == "saveToCustom");
  160.       saveToDefault.disabled = saveToCustom.disabled = saveToAskMe.disabled = false;
  161.       break;
  162.     case "plugin":
  163.       changeApp.disabled = customApp.disabled = defaultApp.disabled = saveToDefault.disabled = saveToCustom.disabled = customDownloadFolder.disabled = chooseCustomDownloadFolder.disabled = saveToAskMe.disabled = true;
  164.       pluginName.disabled = false;
  165.       break;
  166.     }
  167.     this._lastSelectedMode = aSelectedItem;
  168.   },
  169.   
  170.   doSaveToDiskEnabling: function (aSelectedItem)
  171.   {
  172.     var isSaveToCustom = aSelectedItem.id == "saveToCustom";
  173.     var customDownloadFolder = document.getElementById("customDownloadFolder");
  174.     var chooseCustomDownloadFolder = document.getElementById("chooseCustomDownloadFolder");
  175.     chooseCustomDownloadFolder.disabled = customDownloadFolder.disabled = !isSaveToCustom;
  176.     
  177.     if (isSaveToCustom && 
  178.         !customDownloadFolder.file && !this.changeCustomFolder()) {
  179.       this._lastSelectedSave.click();
  180.       return;
  181.     }
  182.     this._lastSelectedSave = aSelectedItem;
  183.   },
  184.   
  185.   changeApp: function ()
  186.   {
  187.     const nsIFilePicker = Components.interfaces.nsIFilePicker;
  188.     var fp = Components.classes["@mozilla.org/filepicker;1"]
  189.                        .createInstance(nsIFilePicker);
  190.     var winTitle = this._bundle.getString("fpTitleChooseApp");
  191.     fp.init(window, winTitle, nsIFilePicker.modeOpen);
  192.     fp.appendFilters(nsIFilePicker.filterApps);
  193.     if (fp.show() == nsIFilePicker.returnOK && fp.file) {
  194.       var customApp = document.getElementById("customApp");
  195.       customApp.file = fp.file;
  196.       this._item.customHandler = fp.file;      
  197.       return true;
  198.     }
  199.     return false;
  200.   },
  201.   
  202.   changeCustomFolder: function ()
  203.   {
  204.     const nsIFilePicker = Components.interfaces.nsIFilePicker;
  205.     var fp = Components.classes["@mozilla.org/filepicker;1"]
  206.                        .createInstance(nsIFilePicker);
  207.  
  208.     // extract the window title
  209.     var winTitle = this._bundle.getString("fpTitleChooseDL");
  210.     fp.init(window, winTitle, nsIFilePicker.modeGetFolder);
  211.     if (fp.show() == nsIFilePicker.returnOK && fp.file) {
  212.       var customDownloadFolder = document.getElementById("customDownloadFolder");
  213.       customDownloadFolder.file = fp.file;
  214.       customDownloadFolder.label = fp.file.path;
  215.       return true;
  216.     }
  217.     return false;
  218.   }
  219. };
  220.